#pragma once

#include <sys_def.h>

// 获得低若干位全为1、高位全为0的整数。
static inline u32_s bit_get_low(u32_s low_bits) {
	return (1 << low_bits) - 1;
}

// 将给定数字保留低位（高位清零）返回
static inline u32_s bit_keep_low_clear_high(u32_s n, u32_s low_bits) {
	return n & bit_get_low(low_bits);
}

// 将给定数字右移给定位数，向上取整。
static inline u32_s bit_right_shift_upper(u32_s n, u32_s right_bits) {
	u32_s low_1 = bit_get_low(right_bits);
	return (n + low_1) >> right_bits;
}
